package com.cvr.project.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.View;

/**
 * 水印View组件
 * 用于在Activity上显示测试版本水印
 */
public class WatermarkView extends View {
    
    private Paint mPaint;
    private String mWatermarkText = "当前版本为测试版本";
    private float mTextSize = 72f; // 字体增大一倍
    private int mTextColor = Color.parseColor("#08000000"); // 更加淡的灰色
    private float mRotationAngle = -30f; // 旋转角度
    
    public WatermarkView(Context context) {
        super(context);
        init();
    }
    
    public WatermarkView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    
    public WatermarkView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }
    
    private void init() {
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setTextSize(mTextSize);
        mPaint.setColor(mTextColor);
        mPaint.setTypeface(Typeface.DEFAULT_BOLD);
        mPaint.setAlpha(25); // 设置更低的透明度
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        
        if (getWidth() == 0 || getHeight() == 0) {
            return;
        }
        
        // 保存画布状态
        canvas.save();
        
        // 计算文字宽度和高度
        float textWidth = mPaint.measureText(mWatermarkText);
        float textHeight = mPaint.getFontMetrics().descent - mPaint.getFontMetrics().ascent;
        
        // 计算水印重复的行数和列数（最大程度减少密度）
        int rows = (int) Math.ceil(getHeight() / (textHeight * 8)) + 1; // 最大程度增加行间距
        int cols = (int) Math.ceil(getWidth() / (textWidth * 3.5)) + 1; // 最大程度增加列间距
        
        // 绘制多个水印
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                canvas.save();
                
                // 计算每个水印的位置（最大程度增加间距）
                float x = j * textWidth * 3.5f;
                float y = i * textHeight * 8f + textHeight;
                
                // 移动到指定位置
                canvas.translate(x, y);
                
                // 旋转画布
                canvas.rotate(mRotationAngle);
                
                // 绘制水印文字
                canvas.drawText(mWatermarkText, 0, 0, mPaint);
                
                canvas.restore();
            }
        }
        
        // 恢复画布状态
        canvas.restore();
    }
    
    /**
     * 设置水印文字
     */
    public void setWatermarkText(String text) {
        this.mWatermarkText = text;
        invalidate();
    }
    
    /**
     * 设置文字大小
     */
    public void setTextSize(float textSize) {
        this.mTextSize = textSize;
        mPaint.setTextSize(textSize);
        invalidate();
    }
    
    /**
     * 设置文字颜色
     */
    public void setTextColor(int color) {
        this.mTextColor = color;
        mPaint.setColor(color);
        invalidate();
    }
    
    /**
     * 设置旋转角度
     */
    public void setRotationAngle(float angle) {
        this.mRotationAngle = angle;
        invalidate();
    }
}